﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using System.IO;
using Microsoft.Xna.Framework.Content;

namespace DARE
{
   /* /// <summary>
    /// Class that defines a set of data for a water effects files.
    /// The default effect file is LightWater with Water technique as default technique.
    /// Minimum attributes that have to be in the effect file:
    ///     - float4x4 matWorldViewProj;
    ///     - float4x4 matWorld;
    ///     - float4x4 matWorldInverse;
    ///
    ///     - float4 vecLightPos;
    ///     - float3 posEye;
    ///
    ///     - float highlightIntensity;
    ///
    ///     - float4 specularColor = float4(1, 1, 1, 1);
    ///     - float specularIntensity = 1.0f;
    ///     - float brightness = 50;
    ///
    ///     - float4 diffuseColor = float4(1, 1, 1, 1);
    ///     - float diffuseIntensity = 1.0f;
    ///
    ///     - float4 ambientColor = float4(0, 0, 0, 1);
    ///     - float ambientIntensity = 1.0f;
    ///
    ///     - float4 fogColor = float4(1, 1, 1, 1);
    ///     - float fogNear;
    ///     - float fogFar;
    ///     - bool fogEnabled = false;
    ///
    ///     - float time;
    ///     - float waveSpeed;
    /// 
    ///     - texture NormalMap;
    ///     - sampler NormalMapSampler;
    ///     
    ///     - texture NormalMap2;
    ///     - sampler NormalMap2Sampler;
    ///     
    ///     - texture cubeMap;
    ///     - sampler CubeMapSampler;
    ///     
    ///     - texture ColorMap;
    ///     - sampler ColorMapSampler;
    /// </summary>
    public class CWaterEffect: CBasicEffect
    {
        #region fields

        private Texture2D m_normalMap2;

        private TextureCube m_cubeMap;

        private float m_time;
        private float m_waveSpeed;
        private float m_transparencyFactor;

        #endregion
                
        #region properties

        #region color

        public TextureCube CubeMap
        {
            get { return m_cubeMap; }
            set
            {
                m_cubeMap = value;
                Parameters["cubeMap"].SetValue(m_cubeMap);
            }
        }

        #endregion

        #region lightness

        public Texture2D NormalMap2
        {
            get { return m_normalMap2; }
            set
            {
                m_normalMap2 = value;
                Parameters["NormalMap2"].SetValue(m_normalMap2);
            }
        }

        #endregion

        #region other

        public float Time
        {
            get { return m_time; }
            set
            {
                m_time = value;
                Parameters["time"].SetValue(m_time);
            }
        }

        public float WaveSpeed
        {
            get { return m_waveSpeed; }
            set
            {
                m_waveSpeed = value;
                Parameters["waveSpeed"].SetValue(m_waveSpeed);
            }
        }

        public float TransparencyFactor
        {
            get { return m_transparencyFactor; }
            set
            {
                m_transparencyFactor = value;
                Parameters["transparencyFactor"].SetValue(value);
            }
        }

        #endregion

        #endregion

        #region ctor

        /// <summary>
        /// Constructs the CWaterEffect class with a default effect file ("Shaders/LightWater").
        /// If you want to use this ctor, you have to create this effect file at this path.
        /// You also have to implement a technique named "Water" which will be the default technique.
        /// If you don't want to, use the second ctor.
        /// </summary>
        /// <param name="content">The content manager you want to use for this effect</param>
        public CWaterEffect()
            : base("Shaders/LightWater", "Water")
        {
        }

        /// <summary>
        /// Constructs the CWaterEffect class with the specified effect file (This one have to implement the minimum attributes specified in this
        /// class documentation) and the specified default technique.
        /// </summary>
        /// <param name="content">The content manager you want to use for this effect</param>
        /// <param name="effectFile">The effect file used for this effect</param>
        /// <param name="defaultTechnique">The default technique that will be used</param>
        public CWaterEffect(string effectFile, string defaultTechnique)
            : base(effectFile, defaultTechnique)
        {
        }
        
        #endregion

    }*/
}
